﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class Person {
public:
	/*Person() {
		cout << "Person()" << endl;
	}*/

	string getName() {
		return _name;
	}
	static int _count;
	string _name;

protected:
	//string _name = "张三";// 姓名
	string _address;// 地址
	int _age = 20;// 年龄
};

int Person::_count = 1;

class Student: public Person {
public:
	// 构造
	Student()
		:_stuid(8888888)
	{}
	// 拷贝构造
	Student(const Student& s)
		:Person(s)
		,_stuid(s._stuid)
	{}
	// =重载
	Student& operator=(Student& s) {
		Person::operator=(s);
		_stuid = s._stuid;
	}

	int getAge() {
		return _age;
	}
protected:
	int _stuid;// 学号
};

int main() {
	//Person p;
	//Student s;
	//cout << p.getName() << endl;
	//cout << s.getName() << endl;
	//cout << s.getAge() << endl;

	Person p;
	Student s;
	
	// 这⾥的运⾏结果可以看到非静态成员_name的地址是不⼀样的
	// 说明派⽣类继承下来了，⽗派⽣类对象各有⼀份
	cout << &p._name << endl;
	cout << &s._name << endl;

	// 这⾥的运⾏结果可以看到静态成员_count的地址是⼀样的
	// 说明派⽣类和基类共⽤同⼀份静态成员
	cout << &p._count << endl;
	cout << &s._count << endl;
	
	// 公有的情况下，⽗派⽣类指定类域都可以访问静态成员
	cout << Person::_count << endl;

	return 0;
}